package com.ftg.learn.chapter07;

public class SuanFa {

	public static void main(String[] args) {

		// /**
		// * 第一道题的答案
		// */
		System.out.println("=======1========");
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j <= i; j++) {
				System.out.print("* ");// 一行多列
			}
			System.out.println();
		}
		//
		// /**
		// * 第二道题的答案
		// */
		System.out.println("=======2========");
		for (int i = 0; i < 5; i++) {
			for (int j = 5; j > i; j--) {
				System.out.print("* ");
			}
			// 换行
			System.out.println();
		}
		//
		//
		System.out.println("=======3========");
		for (int i = 0; i < 5; i++) {
			for (int x = 0; x < i; x++) {
				System.out.print("_ ");
			}
			for (int j = 5; j > i; j--) {
				System.out.print("* ");
			}
			// 换行
			System.out.println();
		}

		// /**
		// * 四题
		// */
		System.out.println("=======4========");
		for (int i = 0; i < 5; i++) {
			for (int x = 4; x > i; x--) {
				System.out.print("_");
			}

			for (int j = 0; j <= i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}

		// [类型][] [变量名称 ] = [new] [类型][长度];
		// 变量名称[下标] = 类型值

		// 5题
		System.out.println("=======5========");
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= (2 * i - 1); j++) {
				System.out.print("*");
			}
			System.out.println();
		}

		// 6题
		System.out.println("=======6========");
		for (int i = 1; i <= 5; i++) {
			for (int j = 10; j > (2 * i - 1); j--) {
				System.out.print("*");
			}
			System.out.println();
		}
		
		// 7题
		System.out.println("=======7========");
		for (int i = 1; i <= 9; i++) {
			if (i <= 5) {
				// 输入 空格 增加
				for (int j = 1; j <= (2 * i - 1); j++) {
					System.out.print("*");
				}
				// 每行增加的*号
			} else {
				// 输入 空格 减少
				for (int j = 18; j > (2 * i - 1); j--) {
					System.out.print("*");
				}
				// 每行减少的*号
			}
			System.out.println();
		}

		// 七题！所谓的装蛋写法
		System.out.println("=======7========");
		for (int i = 1; i <= 9; i++) {
			for (int j = (i <= 5 ? 1 : 18); (i <= 5 ? j <= (2 * i - 1)
					: j > (2 * i - 1)); j = (i <= 5 ? j + 1 : j - 1)) {
				System.out.print("*");
			}
			System.out.println();
		}

		// 八题

		// 九题
		System.out.println("=======9========");
		for (int i = 1; i < 10; i++) {

			for (int j = (i <= 5 ? 0 : i - 5); (i <= 5 ? (j < (5 - i))
					: (j > 0)); j = (i <= 5 ? j + 1 : j - 1)) {
				System.out.print(" ");
			}

			for (int j = (i <= 5 ? 0 : 10 - i); (i <= 5 ? (j < i) : (j > 0)); j = (i <= 5 ? j + 1
					: j - 1)) {
				System.out.print("*");
			}
			System.out.println();
		}

		// 十题
		System.out.println("=======10========");
		for (int i = 1; i < 10; i++) {
			for (int j = (i <= 5 ? 0 : 10 - i); (i <= 5 ? (j < i) : (j > 0)); j = (i <= 5 ? j + 1
					: j - 1)) {
				System.out.print("*");
			}
			System.out.println();
		}

		// 十一题
		System.out.println("=======11========");
		for (int i = 0; i < 5; i++) {
			for(int x = 0 ;x < (5-i);x++){
				System.out.print(" ");
			}
			
			for (int j = 0; j < 5; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		
		//十二题 
		System.out.println("=======12========");
		for(int i = 0,x=1;i < 3;i++,x++){
			for(int j = 0 ; j < (x+i);j++){
				System.out.print((int)(Math.pow(2, i) + j));
			}
			System.out.println();
		}
		//十三题 
		System.out.println("=======13========");
		for(int i = 1;i < 6;i++){
			for(int j = 0;j < i;j++){
				System.out.print(i+j);
			}
			System.out.println();
		}
		//十四题 
		System.out.println("=======14========");
		for(int i = 1,x=1;i < 6;i++){
			for(int j = 1;j < i;j++){
				System.out.print(x++);
			}
			System.out.println();
		}
		
		//十五题 
		System.out.println("=======15========");
		for(int i = 0,x=1;i < 3;i++,x++){
			//输出空格 
//			for(int y = 3;y > i;y--){
//				System.out.print(" ");
//			}
			//Math.pow(2, i) 计算2 的i 次方  如:2 的0 次方为1
			for(int j = 0;j < (i+x);j++){
				System.out.print((int)(j > (i+x)/2 ? Math.pow(2, i) + (i+x) - j - 1  : Math.pow(2, i) + j ));//判断 什么时候加什么时候减
			}
			System.out.println();
		}
		
		//十六题 
		System.out.println("=======16========");
		for(int i = 0,x=1;i < 4;i++,x++){
			//输出空格 
			for(int y = 3;y > i;y--){
				System.out.print(" ");
			}
			
			for(int j = 0;j < (i+x);j++){
				System.out.print( (j > (i+x)/2 ? (i+x-j) : j+1));//判断 什么时候加什么时候减
			}
			System.out.println();
		}
		
	}

}
